import request from '@/config/axios'

// OA费用报销申请 VO
export interface ExpenseVO {
  id: number // 主键ID
  userId: number // 报销员工ID
  userName: string // 报销员工姓名
  deptId: number // 报销部门ID
  deptName: string // 报销部门名称
  subjectName: string // 报销主体名称
  billNo: string // 单据编号
  billDate: Date // 报销日期
  payDate: Date // 付款日期
  expenseType: number // 费用类型
  expenseName: string // 费用名称
  invoiceAmount: number // 发票金额
  expenseAmount: number // 报销金额
  hasInvoice: number // 是否有发票0=无，1=有
  remark: string // 备注
  files: string // 附件
  status: number // 审批结果
  processInstanceId: string // 流程实例的编号
  creatorName: string // 创建者
  updaterName: string // 更新者
  // 付款人相关字段
  payerId?: number // 付款人ID
  payerName?: string // 付款人姓名
  // 审批人选择字段
  startUserSelectAssignees?: Record<string, number[]> // 发起人自选审批人
}

// OA费用报销申请 API
export const ExpenseApi = {
  // 查询OA费用报销申请分页
  getExpensePage: async (params: any) => {
    return await request.get({ url: `/oa/expense/page`, params })
  },

  // 查询OA费用报销申请详情
  getExpense: async (id: number) => {
    return await request.get({ url: `/oa/expense/get?id=` + id })
  },

  // 新增OA费用报销申请
  createExpense: async (data: ExpenseVO) => {
    return await request.post({ url: `/oa/expense/create`, data })
  },

  // 修改OA费用报销申请
  updateExpense: async (data: ExpenseVO) => {
    return await request.put({ url: `/oa/expense/update`, data })
  },

  // 删除OA费用报销申请
  deleteExpense: async (id: number) => {
    return await request.delete({ url: `/oa/expense/delete?id=` + id })
  },

  // 导出OA费用报销申请 Excel
  exportExpense: async (params) => {
    return await request.download({ url: `/oa/expense/export-excel`, params })
  },

  // 更新支付状态
  updatePayStatus: async (id: number, payStatus: number) => {
    return await request.put({ url: `/oa/expense/update-pay-status`, params: { id, payStatus } })
  },

  // 分页获取本部门费用报销申请
  getDeptExpensePage: async (params: any) => {
    return await request.get({ url: `/oa/expense/dept-page`, params })
  },

  // 导出本部门费用报销申请 Excel
  exportDeptExpense: async (params: any) => {
    return await request.download({ url: `/oa/expense/dept-export-excel`, params })
  },

  // 暂存费用报销单（草稿状态）
  saveDraft: async (data: ExpenseVO) => {
    return await request.post({ url: `/oa/expense/save-draft`, data })
  },

  // 修改暂存的费用报销单
  updateDraft: async (data: ExpenseVO) => {
    return await request.put({ url: `/oa/expense/update-draft`, data })
  }
}
